package com.example.shop.utils;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;

import com.example.shop.pojo.User;





public class AutoLogout {
	 // 存储用户最后一次操作时间的映射
    private static Map<Object, Date> lastOperationTimeMap = new HashMap<>();
    
    // 用户执行了操作，更新最后操作时间
    public static void userPerformedOperation(Object account) {
        Date now = new Date();
        lastOperationTimeMap.put(UserIdSession.getAttribute((String)account), now);
        System.out.println("用户" + UserIdSession.getAttribute((String)account) + "执行了操作，操作时间：" + now);
    }
    
    // 检查用户是否超时
    public  static boolean checkUserTimeout(String userAccount) {
        Date lastOperationTime = lastOperationTimeMap.get(userAccount);
        if (lastOperationTime != null && isTimeout(lastOperationTime, 1 * 60 * 1000)) {
            // 用户超时
            System.out.println("用户" + userAccount + "超时，进行自动退出");
            // 清除用户操作时间记录
            lastOperationTimeMap.remove(userAccount);
            // 进行自动退出的相关操作，如清除用户登录状态等
            UserIdSession.removeAttribute(userAccount);
            return true;
        }
        return false;
    }
    
    // 判断时间是否超时
    public static boolean isTimeout(Date startTime, long timeoutMillis) {
        return System.currentTimeMillis() - startTime.getTime() >= timeoutMillis;
    }
    
    public static void autoLogout(User user) {
    	// 开启定时器任务，每秒检测一次用户是否超时
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
            	while(true) {
            		if(UserIdSession.getAttribute(user.getAccount()) == null || checkUserTimeout(UserIdSession.getAttribute(user.getAccount()).toString())) {
            			break;
            		}
            	}
            }
        }, 0, 1000);

        // 模拟用户操作
        userPerformedOperation(user.getAccount());
        // 关闭定时
        timer.cancel();
    }
}
